#include<stdio.h>
#include<string.h>

const char menu[4][20]={"黄焖鸡","鱼香肉丝","麻婆豆腐","清炒土豆丝"};
const double menu_price[4]={25,20,10,8};
int like_num[]={0};
char booker[20][20]={};
int book_menu[20]={0};
int book_num[20]={0};
int book_time[20]={0};
char book_addr[20][50]={};
int book_status[20]={0};
const char status[2][20]={"已预定","已完成"};
int i=0,j=0,key=0,num=0;

void order(void);
void check(void);
void sign(void);
void delete(void);
void like(void);

int main(void)
{
  while(1)
  {
    int rtn=1;
    printf("欢迎使用【吃了么订餐系统】\n");
    printf("**********************\n"); 
    printf("1、我要订餐\n");
    printf("2、查看菜袋\n");
    printf("3、签收订单\n");
    printf("4、删除订单\n");
    printf("5、我要点赞\n");
    printf("6、退出系统\n");
    printf("**********************\n");
    printf("请选择： ");
    scanf("%d",&key);
    switch(key)
    {
      case 1:
        order();
        break;
      case 2:
        check();
        break;
      case 3:
        sign();
        break;
      case 4:
        delete();
        break;
      case 5:
        like();
        break;
      case 6:
        return 0;
      default:
        printf("编号不存在，请重新选择\n");
    }
    printf("输入0返回: ");
    while(rtn)
    {
      scanf("%d",&rtn);
    }
  }
}

void order(void)
{
  printf("***我要订餐***\n");
  if(num<20)
  {
    printf("请输入订餐人姓名： ");
    scanf("%s",booker[i]);
    printf("序号 菜名 单价 点赞数\n");
    for(i=0;i<4;i++)
    {
      printf("%d %s %.1f元 %d\n",i+1,menu[i],menu_price[i],like_num[i]);
    }
    printf("请选择您要点的菜品编号: ");
    scanf("%d",&book_menu[num]);
    book_menu[num]++;
    printf("请选择您需要的份数： ");
    scanf("%d",&book_num[num]);
    do
    {
      printf("请输入送餐时间(送餐时间是10点至20点间整点送餐): ");
      scanf("%d",&book_time[num]);
    }
    while(book_time[num]<=10||book_time[num]>=20);
    printf("请输入送餐地址： ");
    scanf("%s",book_addr[num]);
    printf("订餐成功！\n");
    printf("您订的是：%s %d份\n",menu[book_menu[num]],book_num[num]);
    printf("送餐时间：%d时\n",book_time[num]);
    printf("餐费：%.1f元,送餐费5.0元,总计:%.1f元。\n",
      menu_price[num]*book_num[num],menu_price[num]*book_num[num]+5);
    num++;
  }
  else
    printf("很抱歉，本店今日菜品已售完，请明日再来。\n");
}

void check(void)
{
  printf("***查餐餐袋***\n");
  printf("序号 订餐人 餐品信息 送餐时间 送餐地址 总金额 订单状态\n");
  for(i=0;i<num;i++)
  {
    printf("%d %s %s %d份 %d时 %s %.1f元 %s\n",
      i+1,booker[i],menu[book_menu[i]],book_num[i],book_time[i],book_addr[i],
      menu_price[i]*book_num[i]+5,status[book_status[i]]);
  }
}

void sign(void)
{
  printf("***签收订单***\n");
  printf("请选择要签收的订单序号: ");
  scanf("%d",&i);
  i--;
  if(i<num)
  {
    book_status[i]=1;
    printf("订单签收成功！\n");
  }
  else
    printf("您选择的订单不存在！\n");
}

void delete(void)
{
  printf("***删除订单***\n");
  printf("请选择要删除的订单序号: \n");
  scanf("%d",&i);
  i--;
  if(i<=num && book_status[i]==1)
  {
    for(j=i;j<num;j++)
    {
      strcpy(booker[j],booker[j+1]);
      book_menu[j]=book_menu[j+1];
      book_num[j]=book_num[j+1];
      book_time[j]=book_time[j+1];
      strcpy(book_addr[j],book_addr[j+1]);   
      book_status[j]=book_status[j+1];  
    }
    num--;
    printf("删除订单成功！\n");
  }
  else if(i<=num&&book_status[i]==0)
  {
    printf("您选择的订单未签收，不能删除！\n");
  }
  else
    printf("您选择的订单不存在！\n");
}

void like(void)
{
  printf("***我要点赞***\n");
  printf("请选择您要点赞的菜品序号: ");
  scanf("%d",&i);
  like_num[--i]++;
  printf("点赞成功！\n");
}